#include "mqueue.h"
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>

// 消息队列的名字
static char *mq_name = "/mq_test";
// 消息队列描述符
static mqd_t mqd;
void *thread1_func(void *arg)
{
    sleep(1);
    // 发送消息
    mq_send(mqd, "hello world", 11, 1);
    return NULL;
}
void *thread2_func(void *arg)
{
    // 接收消息
    char buf[128];
    ssize_t len = mq_receive(mqd, buf, 128, NULL);
    printf("receive message: %s\n", buf);
    return NULL;
}

int main()
{
    // 创建消息队列
    // 队列的属性
    struct mq_attr attr;
    // 队列最大消息数
    attr.mq_maxmsg = 10;
    // 每个消息的最大字节数
    attr.mq_msgsize = 100;
    mqd = mq_open(mq_name,O_CREAT | O_RDWR,0666,&attr);

    // 创建一个线程
    pthread_t tid1,tid2;
    pthread_create(&tid1,NULL,thread1_func,NULL);
    pthread_create(&tid2,NULL,thread2_func,NULL);

    // 等待线程执行完毕
    pthread_join(tid1,NULL);
    pthread_join(tid2,NULL);

    // 关闭消息队列
    mq_close(mqd);
    // 销毁消息队列
    mq_unlink(mq_name);
    return 0; 
}